package dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


import conexao.ConexaoSQLServer;
import modelo.Pessoa;
import modelo.Cliente;
import modelo.Pedido;
import modelo.Produto;

public class PedidoDao {
	
	Connection con = ConexaoSQLServer.getConnection();
	
	public void gravar(Pedido pedido){
		String sql = "INSERT INTO PEDIDO" + " VALUES (?,?,?,?,?)";
		PreparedStatement pstm = null;
		Date data = new Date(pedido.getDtCompra().getTime());
		try {
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, pedido.getCliente().getId());
			pstm.setDate(2, data);
			pstm.setInt(3, pedido.getProduto().getCod());
			pstm.setInt(4, pedido.getQtde());
			pstm.setDouble(5, pedido.getProduto().getValor());
			pstm.execute();
	
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public Object buscarCod(int cod) {
		String sql = "SELECT * FROM PEDIDO WHERE COD = ?";
		Pedido pedido = new Pedido();
		PreparedStatement pstm = null;
		try {
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, cod);
			ResultSet rs = pstm.executeQuery();
			if (rs.next()) {
				pedido.setCod(rs.getInt(1));
				pedido.getCliente().setId(rs.getInt(2));
				pedido.setDtCompra(rs.getDate(3));
				pedido.getProduto().setCod(rs.getInt(4));
				pedido.setQtde(rs.getInt(5));
				pedido.getProduto().setValor(rs.getInt(6));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return pedido;
	}

	public List<Pedido> listarPedidosCliente(int codCliente) {
		String sql = "SELECT * FROM PEDIDO WHERE COD_CLIENTE = ?";
		List<Pedido> listaPed = new ArrayList<Pedido>();
		PreparedStatement pstm = null;
		try {
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, codCliente);
			ResultSet rs = pstm.executeQuery();
			while (rs.next()) {
				Pedido ped = new Pedido();
				ped.setCod(rs.getInt(1));
				ped.getCliente().setId(rs.getInt(2));
				ped.setDtCompra(rs.getDate(3));
				ped.getProduto().setCod(rs.getInt(4));
				ped.setQtde(rs.getInt(5));
				ped.getProduto().setValor(rs.getDouble(6));
				listaPed.add(ped);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return listaPed;
	}


	public List<Pedido> listarTodos() {
		String sql = "SELECT * FROM PEDIDO";
		List<Pedido> listaPed = new ArrayList<Pedido>();
		PreparedStatement pstm = null;
		try {
			pstm = con.prepareStatement(sql);
			ResultSet rs = pstm.executeQuery();
			while (rs.next()) {
				Pedido ped = new Pedido();
				ped.setCod(rs.getInt(1));
				ped.getCliente().setId(rs.getInt(2));
				ped.setDtCompra(rs.getDate(3));
				ped.getProduto().setCod(rs.getInt(4));
				ped.setQtde(rs.getInt(5));
				ped.getProduto().setValor(rs.getDouble(6));
				listaPed.add(ped);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return listaPed;
	}
	
}
